package com.hsq.db137.demos.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hsq.db137.demos.config.R;
import com.hsq.db137.demos.entity.Roleinfo;
import com.hsq.db137.demos.entity.Rolemenu;
import com.hsq.db137.demos.seriver.RoleinfoService;
import org.intellij.lang.annotations.Flow;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * @Author: hsq加油
 * @CreateTime: 2024/12/25-16:57
 * @Description: TODO
 * @Version: 1.0
 */
@RestController
@CrossOrigin(origins = "*")
public class RoleinfoController {
    @Autowired
     RoleinfoService roleinfoService;

    /**
     *根据用户ID查询所有的角色ID
     * @param userid 用户ID
     * @return 工具类
     */
    @GetMapping("selectRoleById")
    public R selectRoleById(int  userid) {
        List<Roleinfo> roleinfos=roleinfoService.selectRoleByUserid(userid);
        return new R().add("roleinfos",roleinfos);
    }

    /**
     * 根据角色ID修改角色对应的菜单ID集合

     * @return
     */
    @PostMapping("updateRoleMenu")
    R updateRoleMenu(@RequestBody Map<String, Object> map) {
        int roleid=Integer.parseInt(map.get("roleid").toString());
        List<Integer> list= (List<Integer>) map.get("list");
    //        System.out.println("roleid = " + roleid);
    //        System.out.println("list = " + list);
    //        System.out.println("map = " + map);
        boolean b = roleinfoService.updateRoleMenuId(roleid, list);
        System.out.println("b = " + b);
        return new R().add("b",b);
    }

    /**
     * 新增角色
     * @param roleinfo 角色类
     * @return 提示语句
     */
    @PostMapping(value = "insrole")
    public String insert(@RequestBody Roleinfo roleinfo){
        return roleinfoService.insert(roleinfo);
    }

    /**
     * 查询全部角色
     * @return 角色集合
     */
    @GetMapping("getRoleinfo")
    public R getRoleinfo(){
        List<Roleinfo> roleinfo = roleinfoService.getRoleinfo();
        return  new R().add("roleinfo",roleinfo);
    }

    /**
     * 修改角色
     * @param roleinfo 角色类
     * @return 提示语句
     */
    @PostMapping("updateRoleinfo")
    String updateRoleinfo(@RequestBody Roleinfo roleinfo){
       return roleinfoService.updateRoleinfo(roleinfo);
    }

    /**
     * 根据角色ID查询相对应的菜单集合
     * @param roleid 角色ID
     * @return 集合
     */
        @GetMapping("selectRoleMenusByRid")
    R selectRoleMenusByRid(int roleid){
        List<Rolemenu> rolemenus = roleinfoService.selectRoleMenusByRid(roleid);
        return new R().add("rolemenus",rolemenus);
    }

    /**
     * 根据ID查询
     * @param id 角色ID
     * @return
     */
    @GetMapping("roleOne")
    public R roleOne(int id){
        return new R().add("roleOne",roleinfoService.getOne(new QueryWrapper<Roleinfo>().eq("roleid",id)));
    }
}
